#include<stdlib.h>
#include<assert.h>
#include "TabDynTir.h"

void tabdynTirInit(TabDynTir* tab)
{
    tab->ad=(Tir*)malloc(sizeof (Tir));
    tab->taille_utilisee=0;
    tab->capacite=1;
}

void tabdynTirTestament(TabDynTir* tab)
{
     if(tab->ad!=NULL)
    {
        free(tab->ad);
        tab->ad=NULL;
        tab->capacite=0;
        tab->taille_utilisee=0;
    }
}

void tabdynAjouterTir(TabDynTir* tab,const Tir* tir)
{
     if(tab->capacite==tab->taille_utilisee)
    {
        int i;
        Tir* nvtab = tab->ad;
        tab->ad=(Tir*)malloc(2* tab->capacite*(sizeof(Tir)));
        for(i=0; i<tab->taille_utilisee; i++)
        {
            tab->ad[i]=nvtab[i];
        }
        free(nvtab);
        tab->capacite = 2*tab->capacite;
    }
    tab->ad[tab->taille_utilisee]=*tir;
    tab->taille_utilisee++;
}

void tabdynSupprimerTir(TabDynTir* tab,int position)
{
     int i;
     assert(position>=0);
    assert(position<tab->taille_utilisee);
    for(i=position; i<tab->taille_utilisee-1; i++)
    {
        tab->ad[i]=tab->ad[i+1];
    }
    tab->taille_utilisee--;
    if(tab->taille_utilisee < tab->capacite/3)
    {
        Tir* tmp=(Tir*)malloc((tab->capacite/2)*sizeof(Tir));
        for(i=0;i<tab->taille_utilisee;i++)
        {
            tmp[i]=tab->ad[i];
        }
        free(tab->ad);
        tab->ad=tmp;
        tab->capacite=tab->capacite/2;
    }
}


